package Crawler;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Crawling {
    public static void main(String[] args) {
        /*爬取以下内容
        Java有许多不同版本，其中比较常见的版本包括 Java SE（Java标准版）、Java EE（Java企业版）和Java ME（Java微型版）等。此外，每个Java版本都包含很多不同的发行版和更新版本，如Java SE 6、Java SE 7、Java SE 8、Java SE 11等。每个版本都有其特定的功能和改进，同时也会包含一些新的API和库，以满足不同场景下的需求。预计2021年9月发布的Java 17是当前的最新稳定版本。
        要求：爬取JavaXX
         */
        String java="Java有许多不同版本，其中比较常见的版本包括 Java SE（Java标准版）、Java EE（Java企业版）和Java ME（Java微型版）等。此外，每个Java版本都包含很多不同的发行版和更新版本，如Java SE 6、Java SE 7、Java SE 8、Java SE 11等。每个版本都有其特定的功能和改进，同时也会包含一些新的API和库，以满足不同场景下的需求。预计2021年9月发布的Java 17是当前的最新稳定版本。";

        //method1(java);

        //获取正则表达式的对象
        Pattern p=Pattern.compile("Java\\d{0,2}");
        //获取文本匹配器
        //拿着m去读取java,寻找符合p规则的子串
        Matcher m=p.matcher(java);

        //利用循环重复获取
        while (m.find()){
            String str=m.group();
            System.out.println(str);
        }


    }

    private static void method1(String java) {
        //Pattern:表示正则表达式
        //Matcher:文本匹配器,从头开始，找出爬取内容中所有符合要求的内容

        //获取正则表达式的对象
        Pattern p=Pattern.compile("Java\\d{0,2}");
        //获取文本匹配的对象
        //m:文本匹配器的对象
        //java:大串
        //p:规则
        //m要在java中寻找符合p规则的小串
        Matcher m= p.matcher(java);

        //拿着文本匹配器从头开始读取，寻找是否要满足规则的子串
        //如果没有，返回fasle
        //如果有，则返回true,并在底层记录子串的起始索引和(结束索引并+1)
        boolean b=m.find();

        /*
        方法底层会根据find方法获取的索引进行字符串截取
        subString(起始索引,结束索引);包头不包尾
        会把截取的小串进行返回
         */
        String s1=m.group();
        System.out.println(s1);
    }
}
